import Fetch from '../api/request'
import config from 'config'

module.exports = class PodController {
  /**
   * 获取服务下的容器信息
   * @param {*} ctx
   */
  static async getPods(ctx) {
    let environmentId = ctx.checkQuery('environmentId').value
    let serviceId = ctx.checkQuery('serviceId').value
    let ret = {}
    await Fetch.get({
      url: '/api/environments/' + environmentId + '/services/' + serviceId + '/pods',
      ctx
    }).then((res) => {
      ret = res
    }).catch((err) => {
      ctx.errorHandle(ctx, err)
    })
    ret.url = config.get('wsUrl.basic')

    ctx.body = ret
  }

  /**
   * 修改容器数量
   * @param {*} ctx
   */
  static async add(ctx) {
    let environmentId = ctx.checkBody('environmentId').value
    let groupId = ctx.checkBody('groupId').value
    let serviceId = ctx.checkBody('serviceId').value
    let reqData = ctx.checkBody('data').value
    let ret = {}
    await Fetch.patch({
      url: '/api/environments/' + environmentId + '/groups/' + groupId + '/services/' + serviceId,
      ctx,
      params: reqData
    }).then((res) => {
      ret = res
    }).catch((err) => {
      ctx.errorHandle(ctx, err)
    })

    ctx.body = ret
  }

  /**
   * 删除容器
   * @param {*} ctx
   */
  static async delete(ctx) {
    let environmentId = ctx.checkQuery('environmentId').value
    let podId = ctx.checkQuery('podId').value
    let ret = {}
    await Fetch.delete({
      url: '/api/environments/' + environmentId + '/pods/' + podId,
      ctx
    }).then((res) => {
      ret = res
    }).catch((err) => {
      ctx.errorHandle(ctx, err)
    })
    ctx.body = ret
  }

  /**
   * 线程块下载
   * @param {*} ctx
   */
  static async threadDumpDownload(ctx) {
    let ret = {}
    await Fetch.get({
      url: ctx.request.url,
      ctx
    }).then((res) => {
      ret = res
    }).catch((err) => {
      ctx.errorHandle(ctx, err)
    })
    ctx.body = ret
  }

   /**
   * 内存块下载
   * @param {*} ctx
   */
  static async heapDumpDownload(ctx) {
    let ret = {}
    await Fetch.get({
      url: ctx.request.url,
      ctx,
      headers: {
        'Content-Type': 'application/octet-stream'
      }
    }).then((res) => {
      ret = res
    }).catch((err) => {
      ctx.errorHandle(ctx, err)
    })
    ctx.type = 'application/octet-stream'
    ctx.body = ret
  }

   /**
   * 内存使用率下载
   * @param {*} ctx
   */
  static async heapUsageDownload(ctx) {
    let ret = {}
    await Fetch.get({
      url: ctx.request.url,
      ctx
    }).then((res) => {
      ret = res
    }).catch((err) => {
      ctx.errorHandle(ctx, err)
    })
    ctx.body = ret
  }

  /**
   * 内存块下载次数获取
   * @param {*} ctx
   */
  static async heapDumpDownloadCount(ctx) {
    let ret = {}
    await Fetch.get({
      url: ctx.request.url,
      ctx
    }).then((res) => {
      ret = res
    }).catch((err) => {
      ctx.errorHandle(ctx, err)
    })
    ctx.body = ret
  }
}
